LoginSignup
ponitatenichi
@ponitatenichi

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

atcoderでwaが出る原因

解決したいこと

atcoderのABCコンテスト353のc問題でsampleケースは通るのですがほかのケースでwaが出ます。
どのケースでwaになるのか教えてください。

該当するソースコード

#include <bits/stdc++.h>
using namespace std;
typedef long long lint;
#define rep(i, n) for(int i = 0; i < (int) n; i++)

int main(void)
{
    lint n;
    cin >> n;
    vector<lint> a(n);
    rep(i, n) cin >> a[i];
    const lint num = pow(10, 8);
    int ans = 0;
    rep(i, n) ans += a[i];
    ans = (n -1) * ans;
    sort(a.begin(), a.end());
    int result = 0;
    vector<lint> r(n);
    for(int i = 0; i < n; i++)
    {
        if(i == 0) r[i] = n - 1;
        else r[i] = r[i - 1];
        while(true)
        {
            if(a[i] + a[r[i]] < num)
            {
                break;
            }
            else if(r[i] >= 0)
            {
                r[i]--;
            }
            else
            {
                break;
            }
        }
    }
    for(int i = 0; i < n; i++)
    {
        if(r[i] + 1 > i) result += (n - r[i] - 1);
        else result += (n - r[i] - 2);
    }
    result /= 2;
    cout << ans - result* num << endl;
    return 0;
}

問題: https://atcoder.jp/contests/abc353/tasks/abc353_c
提出コード: https://atcoder.jp/contests/abc353/submissions/53572075

0

1Answer

Comments

  1. @ponitatenichi

    Questioner

    「変数ansとresultがintだからでは?」
    全然気が付きませんでした!
    ansとresultをlong long にすることで無事acできました。
    回答ありがとうございます。

  2. 例題が通るのに、提出するとWAやREになる場合は、制約の最大値を試してみるとよいです。

    解決でよければ、当Q&Aをクローズしてください。

Your answer might help someone💌